/*
 * UtilCodeContext.java	 
 *
 * Copyright 2012 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 07/04/12, 11:23:38 AM
 */
package com.ufps.cuatro.util.generadores.codeobject;

import com.ufps.cuatro.modelo.representacion.Propiedad;
import com.ufps.cuatro.util.Utileria;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 * <i><b>UtilCodeContext:</b></i><p>Esta Clase abstracta define métodos utilitarios de apoyo
 * en el proceso de generación del Código Fuente.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 07/04/12
 */
public abstract class UtilCodeContext {  
    
    /**
     * Devuelve una Colección de Cadenas desde una Cadena de Origen. Este método
     * es util cuando se tiene una cadena extensa con información computada.
     * @param str Cadena origen que tiene los elementos que serán incluidos en la colección.
     * @param strTokens Cadena de caracteres que separan y ayudan a identifcar los elementos
     * que se incluirán en la colección.
     * @return Colección de Elementos que representa la Cadena recibida en el Parámetro.
     */
    public static ArrayList<String> getTokens(String str, String strTokens){
        try{    
            if(!str.isEmpty()){
                ArrayList<String> objTokens = new ArrayList<String>();
                StringTokenizer objToken = new StringTokenizer(str, strTokens);
                while(objToken.hasMoreElements()){
                    objTokens.add(String.valueOf(objToken.nextElement()));
                }
                return objTokens;
            }
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * Permite determinar si la Propiedad puede ser incluida en una generación de
     * código fuente basandose en un archivo de configuración Properties.
     * @param objPropiedad Propiedad que será evaluada.
     * @return bollean que determina si la Propiedad puede ser incluida en una generación de
     * código fuente basandose en un archivo de configuración Properties.
     */
    public static boolean isIgnoreProperties(Propiedad objPropiedad){
        String strIgnore = Utileria.leerRecursoTexto("Utileria.exclusiones.codigo.propiedades");
        StringTokenizer objTokens = new StringTokenizer(strIgnore, ",");
        while(objTokens.hasMoreElements()){
            String strToken = String.valueOf(objTokens.nextElement());
            if(strToken.equals(objPropiedad.getName())){
                return true;
            }
        }
        return false;
    }   
}
